# 匿名函数：lambda
"""
如果一个函数有一个返回值，并且只有一句代码，可以使用lambda简化：
lambda 参数列表：表达式
"""

"""
注：
1.lambda表达式的参数可有可无；
2.函数的参数在lambda表达式中完全适用；
3.lambda表达式能接收任何数量的参数，但只能返回一个表达式的值；
4.直接打印lambda表达式，输出的是此lambda的内存地址。
"""

# 适用匿名函数计算两个数字的和
fn = lambda a, b: a + b
print(fn(1, 2))

"""
匿名函数的应用：
1.适用匿名函数做判断；
2.适用匿名函数和sort函数结合完成排序
"""

# 1.适用匿名函数做判断；
fn1 = lambda a, b: a if a > b else b
print(fn1(100, 500))

# 2.适用匿名函数和sort函数结合完成排序
# 需要给某个复杂的列表排序
lst = [
    {'name': '张三', 'age': 34},
    {'name': '李四', 'age': 16},
    {'name': '王五', 'age': 41},
]
# 根据年龄来排序
# print(lst.sort())  #报错
lst.sort(key=lambda item: item['age'], reverse=True)  # 使用lambda,降序排序
print(lst)

# lambda能接收任何数量的参数
# lambda z=100, *arg: z + sum(arg)
